// 我的页面
const auth = require('../../../utils/auth')
const { getUserApplicationCount } = require('../../../api/minLivingAllowance')
const { getUserComplaintCount } = require('../../../api/complaints')
const { getUserFavoritesCount } = require('../../../api/serviceItems')
const { getUserActivityCount } = require('../../../api/activities')

Page({
  data: {
    userInfo: {
      name: '',
      role: '',
      id: '',
      province: '',
      county: '',
      village: '',
      address: '',
      email: ''
    },
    // 全局加载状态
    globalLoading: false,
    globalLoadingText: '用户信息加载中...',
    stats: {
      complaintCount: 0,
      favoritesCount: 0,
      activityCount: 0
    },
    adminStats: {
      totalUsers: 0,
      pendingCases: 0
    }
  },

  // 显示全局加载
  showGlobalLoading(text = '用户信息加载中...') {
    const app = getApp()
    app.showGlobalLoading({
      loadingText: text
    })
  },

  // 隐藏全局加载
  hideGlobalLoading() {
    const app = getApp()
    app.hideGlobalLoading()
  },

  // 更新全局加载状态
  updateGlobalLoading(data) {
    this.setData({
      globalLoading: data.globalLoading,
      globalLoadingText: data.globalLoadingText || this.data.globalLoadingText
    })
  },

  onLoad() {
    this.loadUserInfo()
    this.loadStats()
  },

  onShow() {
    // 每次显示页面时刷新数据
    console.log('我的页面 onShow 被调用')
    
    // 检查是否有数据更新
    const lastUpdateTime = wx.getStorageSync('USER_INFO_UPDATED')
    const currentUpdateTime = this.data.lastUpdateTime || 0
    
    if (lastUpdateTime && lastUpdateTime > currentUpdateTime) {
      console.log('检测到用户信息已更新，强制刷新数据')
      this.setData({ lastUpdateTime: lastUpdateTime })
    }
    
    this.loadUserInfo()
    this.loadStats()
  },

  // 加载用户信息
  loadUserInfo() {
    const role = auth.getCurrentRole()
    if (role) {
      // 从本地存储获取用户信息
      const userInfo = wx.getStorageSync('USER_INFO') || {}
      console.log('我的页面加载用户信息 (from storage):', userInfo)
      console.log('地理信息 (from storage):', {
        province: userInfo.province,
        city: userInfo.city,
        county: userInfo.county,
        village: userInfo.village
      })
      
      // 强制检查数据是否存在
      if (!userInfo.province && !userInfo.city && !userInfo.county && !userInfo.village) {
        console.warn('警告：本地存储中没有地理信息数据！')
      }
      
      // 检查数据更新时间
      const updateTime = wx.getStorageSync('USER_INFO_UPDATED')
      if (updateTime) {
        console.log('用户信息最后更新时间:', new Date(updateTime).toLocaleString())
      }
      
      this.setData({
        userInfo: {
          name: userInfo.name || '用户',
          role: role,
          id: userInfo.accountNumber || '001',
          avatar: userInfo.avatar || '',
          province: userInfo.province || '',
          city: userInfo.city || '',
          county: userInfo.county || '',
          village: userInfo.village || '',
          address: userInfo.address || '',
          email: userInfo.email || ''
        }
      })
      
      console.log('我的页面设置到页面的用户信息:', this.data.userInfo)
      console.log('地理信息显示检查:', {
        province: this.data.userInfo.province,
        city: this.data.userInfo.city,
        county: this.data.userInfo.county,
        village: this.data.userInfo.village,
        hasAnyLocation: !!(this.data.userInfo.province || this.data.userInfo.city || this.data.userInfo.county || this.data.userInfo.village)
      })
      
      // 检查每个字段是否为空
      console.log('字段空值检查:', {
        provinceEmpty: !this.data.userInfo.province,
        cityEmpty: !this.data.userInfo.city,
        countyEmpty: !this.data.userInfo.county,
        villageEmpty: !this.data.userInfo.village
      })
      
      // 显示四级地理信息状态
      console.log('四级地理信息显示状态:', {
        '省份': this.data.userInfo.province || '无数据',
        '城市': this.data.userInfo.city || '无数据', 
        '县区': this.data.userInfo.county || '无数据',
        '村庄': this.data.userInfo.village || '无数据'
      })
      
      // 检查原始存储数据
      console.log('原始存储数据检查:', {
        'province': userInfo.province,
        'city': userInfo.city,
        'county': userInfo.county,
        'village': userInfo.village
      })
    } else {
      // 未登录状态
      this.setData({
        userInfo: {
          name: '',
          role: '',
          id: '',
          province: '',
          county: '',
          village: '',
          address: '',
          email: ''
        }
      })
    }
  },

  // 加载统计数据
  async loadStats() {
    const currentUser = auth.getCurrentUser()
    if (!currentUser || !currentUser.userId) {
      console.log('用户未登录，跳过统计数据加载')
      return
    }

    const userId = currentUser.userId
    console.log('开始加载统计数据，用户ID:', userId)

    // 显示加载状态
    this.showGlobalLoading('正在加载统计数据...')

    // 初始化统计数据
    const stats = {
  // 最低生活保障申请总数量
      complaintCount: 0,   // 反馈建议总数量
      favoritesCount: 0,   // 收藏总数量
      activityCount: 0     // 参与活动总数量
    }

    // 管理员统计数据
    const adminStats = {
      totalUsers: 156,
      pendingCases: 8
    }

    try {
      // 并行获取所有统计数据
      const promises = []

      // 1. 获取最低生活保障申请总数量
      promises.push(
        this.getUserApplicationCount(userId).catch(error => {
          console.error('获取申请数量失败:', error)
          return 0
        })
      )

      // 2. 获取反馈建议总数量
      promises.push(
        this.getUserComplaintCount().catch(error => {
          console.error('获取反馈建议数量失败:', error)
          return 0
        })
      )

      // 3. 获取收藏总数量
      promises.push(
        this.getUserFavoritesCount(userId).catch(error => {
          console.error('获取收藏数量失败:', error)
          return 0
        })
      )

      // 4. 获取参与活动总数量
      promises.push(
        this.getUserActivityCount(userId).catch(error => {
          console.error('获取活动数量失败:', error)
          return 0
        })
      )

      // 等待所有请求完成
      const results = await Promise.all(promises)
      
      // 更新统计数据
      stats.complaintCount = results[1]
      stats.favoritesCount = results[2]
      stats.activityCount = results[3]

      console.log('统计数据加载完成:', stats)

    } catch (error) {
      console.error('加载统计数据时发生错误:', error)
      wx.showToast({
        title: '数据加载失败',
        icon: 'none',
        duration: 2000
      })
    } finally {
      // 隐藏加载状态
      this.hideGlobalLoading()
    }

    this.setData({
      stats,
      adminStats
    })
  },

  // 获取用户申请总数量
  async getUserApplicationCount(userId) {
    const result = await getUserApplicationCount(userId)
    console.log('申请数量API返回结果:', result)
    
    if (result.success && result.data) {
      const count = result.data.totalCount || 0
      console.log('解析后的申请数量:', count)
      return count
    }
    return 0
  },

  // 获取用户反馈建议总数量
  async getUserComplaintCount() {
    const result = await getUserComplaintCount()
    
    if (result.success && result.data) {
      return result.data.totalCount || 0
    }
    return 0
  },

  // 获取用户收藏总数量
  async getUserFavoritesCount(userId) {
    const result = await getUserFavoritesCount(userId)
    
    if (result.success && result.data) {
      return result.data.totalCount || 0
    }
    return 0
  },

  // 获取用户参与活动总数量
  async getUserActivityCount(userId) {
    const result = await getUserActivityCount(userId)
    console.log('活动数量API返回结果:', result)
    
    if (result.success && result.data) {
      const count = result.data.totalCount || 0
      console.log('解析后的活动数量:', count)
      return count
    }
    return 0
  },

  // 编辑个人资料
  onEditProfile() {
    if (!auth.getCurrentRole()) {
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      })
      return
    }
    
    wx.navigateTo({
      url: '/pages/user/mine/profile/index'
    })
  },

  // 查看办件进度
  onViewProgress() {
    if (!auth.getCurrentRole()) {
      this.showLoginTip()
      return
    }
    
    wx.navigateTo({
      url: '/pages/user/progress/index',
      success: () => console.log('跳转到办件进度页面成功'),
      fail: (err) => {
        console.error('跳转失败:', err)
        wx.showToast({ title: '页面跳转失败', icon: 'none' })
      }
    })
  },


  // 查看投诉建议
  onViewComplaints() {
    if (!auth.getCurrentRole()) {
      this.showLoginTip()
      return
    }
    
    wx.navigateTo({
      url: '/pages/village/complaints/index',
      success: () => console.log('跳转到投诉建议页面成功'),
      fail: (err) => {
        console.error('跳转失败:', err)
        wx.showToast({ title: '页面跳转失败', icon: 'none' })
      }
    })
  },

  // 查看收藏
  onViewFavorites() {
    if (!auth.getCurrentRole()) {
      this.showLoginTip()
      return
    }
    
    wx.navigateTo({
      url: '/pages/user/favorites/index',
      success: () => console.log('跳转到收藏页面成功'),
      fail: (err) => {
        console.error('跳转失败:', err)
        wx.showToast({ title: '页面跳转失败', icon: 'none' })
      }
    })
  },

  // 查看活动
  onViewActivities() {
    if (!auth.getCurrentRole()) {
      this.showLoginTip()
      return
    }
    
    wx.navigateTo({
      url: '/pages/user/activities/index',
      success: () => console.log('跳转到我的活动页面成功'),
      fail: (err) => {
        console.error('跳转失败:', err)
        wx.showToast({ title: '页面跳转失败', icon: 'none' })
      }
    })
  },


  // 修改密码
  onChangePassword() {
    if (!auth.getCurrentRole()) {
      this.showLoginTip()
      return
    }
    
    wx.navigateTo({
      url: '/pages/auth/forgot-password/index?mode=change&from=mine',
      success: () => console.log('跳转到修改密码页面成功'),
      fail: (err) => {
        console.error('跳转失败:', err)
        wx.showToast({ title: '页面跳转失败', icon: 'none' })
      }
    })
  },

  // 绑定邮箱
  onBindEmail() {
    if (!auth.getCurrentRole()) {
      this.showLoginTip()
      return
    }
    
    wx.navigateTo({
      url: '/pages/auth/bind-email/index',
      success: () => console.log('跳转到绑定邮箱页面成功'),
      fail: (err) => {
        console.error('跳转失败:', err)
        wx.showToast({ title: '页面跳转失败', icon: 'none' })
      }
    })
  },


  // 关于我们
  onAbout() {
    wx.navigateTo({
      url: '/pages/common/about/index',
      success: () => console.log('跳转到关于我们页面成功'),
      fail: (err) => {
        console.error('跳转失败:', err)
        wx.showToast({ title: '页面跳转失败', icon: 'none' })
      }
    })
  },

  // 退出登录
  onLogout() {
    if (!auth.getCurrentRole()) {
      wx.showToast({
        title: '您还未登录',
        icon: 'none'
      })
      return
    }

    wx.showModal({
      title: '确认退出',
      content: '确定要退出登录吗？',
      success: (res) => {
        if (res.confirm) {
          // 清除登录状态
          auth.clearCurrentUser()
          
          // 重置页面数据
          this.setData({
            userInfo: {
              name: '',
              role: '',
              id: '',
              province: '',
              county: '',
              village: '',
              address: '',
              email: ''
            },
            stats: {
              complaintCount: 0,
              favoritesCount: 0,
              activityCount: 0
            }
          })
          
          wx.showToast({
            title: '已退出登录',
            icon: 'success'
          })
          
          // 跳转到登录页
          setTimeout(() => {
            wx.switchTab({
              url: '/pages/index/index'
            })
          }, 1500)
        }
      }
    })
  },

  // 显示登录提示
  showLoginTip() {
    wx.showModal({
      title: '提示',
      content: '请先登录后再使用此功能',
      confirmText: '去登录',
      cancelText: '取消',
      success: (res) => {
        if (res.confirm) {
          wx.navigateTo({
            url: '/pages/auth/login/index'
          })
        }
      }
    })
  },

  // 立即登录
  onGoLogin() {
    wx.navigateTo({
      url: '/pages/auth/login/index'
    })
  },

  // 管理员入口
  onGoAdminPanel() {
    if (!auth.isAdmin()) {
      wx.showToast({
        title: '权限不足',
        icon: 'none'
      })
      return
    }
    
    // 跳转到管理员首页
    wx.navigateTo({
      url: '/pages/admin/index/index',
      success: () => console.log('跳转到管理员首页成功'),
      fail: (err) => {
        console.error('跳转失败:', err)
        wx.showToast({ title: '页面跳转失败', icon: 'none' })
      }
    })
  },

  // 管理员功能
  onManageUsers() {
    if (!auth.isAdmin()) {
      wx.showToast({
        title: '权限不足',
        icon: 'none'
      })
      return
    }
    
    wx.navigateTo({
      url: '/pages/admin/users/index',
      success: () => console.log('跳转到用户管理页面成功'),
      fail: (err) => {
        console.error('跳转失败:', err)
        wx.showToast({ title: '页面跳转失败', icon: 'none' })
      }
    })
  },

  onManageCases() {
    if (!auth.isAdmin()) {
      wx.showToast({
        title: '权限不足',
        icon: 'none'
      })
      return
    }
    
    wx.navigateTo({
      url: '/pages/admin/cases/index',
      success: () => console.log('跳转到案件管理页面成功'),
      fail: (err) => {
        console.error('跳转失败:', err)
        wx.showToast({ title: '页面跳转失败', icon: 'none' })
      }
    })
  },

  onManageNotices() {
    if (!auth.isAdmin()) {
      wx.showToast({
        title: '权限不足',
        icon: 'none'
      })
      return
    }
    
    console.log('开始跳转到公告管理页面')
    wx.navigateTo({
      url: '/pages/admin/notices/index',
      success: () => {
        console.log('跳转到公告管理页面成功')
      },
      fail: (err) => {
        console.error('跳转失败:', err)
        wx.showToast({ 
          title: '页面跳转失败，请稍后重试', 
          icon: 'none',
          duration: 2000
        })
      }
    })
  },


  // 下拉刷新
  onPullDownRefresh() {
    this.loadUserInfo()
    this.loadStats()
    
    setTimeout(() => {
      wx.stopPullDownRefresh()
    }, 1000)
  },

  // 手动刷新用户信息
  refreshUserInfo() {
    console.log('手动刷新用户信息')
    this.loadUserInfo()
  },

  // 数据修复方法
  testDataFix() {
    console.log('开始数据修复')
    
    // 获取当前用户信息
    const currentUser = wx.getStorageSync('USER_INFO') || {}
    console.log('当前用户信息:', currentUser)
    
    // 正确的四级地理信息数据
    const testData = {
      ...currentUser,
      province: '湖南省',
      city: '邵阳市',
      county: '荷塘区',
      village: '七里营村'
    }
    
    console.log('数据:', testData)
    
    // 保存数据到本地存储
    wx.setStorageSync('USER_INFO', testData)
    
    // 重新加载用户信息
    this.loadUserInfo()
    
    wx.showToast({
      title: '数据已设置',
      icon: 'success'
    })
  }
})
